package com.wys.singleton_demo.lazy;

import java.io.Serializable;

/**
 * @author godShan
 * @Description: 内部内的单例模式
 * @date 2019/5/5 11:32
 */
//优点 没有线程安全的问题 而且性能最优
//缺点 没有办法防止序列化和反序列化破坏单例
public class InnerClassSingleton implements Serializable {

    private InnerClassSingleton() {
    }

    public static final InnerClassSingleton getInstance() {
        return SingletonHandler.INSTANCE;
    }

    private static class SingletonHandler {
        private final static InnerClassSingleton INSTANCE = new InnerClassSingleton();
    }

    //防止序列化 破坏单例

    /***
     * 内部实现 是在jvm 层次创建了2次实例 新new 出来的实例被 我们已经创建的实例所覆盖
     * @return
     */
    private Object readResolve() {
        return SingletonHandler.INSTANCE;
    }

}
